<?php
/**
 * Descripción Corta
 *
 * Descripción Larga.....
 *
 *
 * Desarrollado por la Escuela de Ingeniería de Antioquia
 *
 *
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       miBusWeb.Model
 * @fecha         Fecha Creación(yyyy-mm-dd)
 * @fecha_mod	  Fecha Modifiación
 * @cake		  CakePHP(tm) v 0.10.0.0
 */

App::uses('AppModel', 'Model');

class MiModelo extends AppModel {

	/**
	 * Nombre de la tabla en base de datos
	 *
	 * Tabla relacionada con el modelo en cuestión, este atributo será usado para la generación 
	 * de consultas a la base de datos
	 *
	 * @var string
	 */
	public $useTable = "mis_modelos";
	/**
	 * Clave primaria de la base de datos
	 *
	 * clave primaria que indentifica cada registro de la tabla en cuestión
	 *
	 * @var string
	 */
	public $primaryKey = "id_mi_modelo";
	/**
	 * Nombre del campo que se muestra cuando se hacen busquedas del modelo
	 *
	 * Nombre del campo que se muestra cuando se hacen busquedas del modelo
	 *
	 * @var string
	 */
	public $displayField = "campo_de_mi_modelo";
	/**
	 * Nivel de recusividad para la busqueda de entidades relacionadas
	 *
	 * Este campo sirve para indicar si una consulta debe incluir las entidades
	 * relacionadas con el modelo en cuestión, -1 quiere decir, 0 q.. y 1 ..
	 *
	 * @var int
	 */
	public $recursive = -1;
	/**
	 * Nombre del modelo
	 *
	 * Nombre del modelo para un alias las consultas y busquedas, ingresos y 
	 * otras interacciones con la base de datos. 
	 *
	 * @var string
	 */
	public $name = "MiModelo";
	/**
	 * Orden por defecto
	 *
	 * Orden por defecto para las consultas que se realicen a la base de datos,
	 * se pueden incluir varios campos de la base de datos. Y si se especifica
	 * otro orden este no se tiene en cuenta.	 
	 *
	 * @var array(string)
	 */
	public $order = array("MiModelo.campo1", "MiModelo.campo2");

	// public $hasOne = array(
	// 	"OtroModelo" => array(
	// 			"className" => "nombre_modelo",
	// 			"foreignKey" => "id_otro_modelo",
	// 			"conditions" => array("OtroModelo.campo1" => activo,),
	// 			"fields" => array("campo1", "campo2",),		//Para capturar todos los campos, borrar linea
	// 			"order" => array("OtroModelo.campo1",),
	// 			"dependent" => true,	//Si es true, metodo delete() del modelo es llamado con el parametro cascade como true borrando los datos asociados también
	// 		),
	// );
	// public $hasMany = array(
	// 	"OtroModelo2" => array(
	// 			"className" => "nombre_modelo",
	// 			"foreignKey" => "id_otro_modelo2",
	// 			"conditions" => array("OtroModelo2.campo1" => activo,),
	// 			"order" => array("OtroModelo2.campo1",),
	// 			"limit" => 3,	//Maximo numero de registros asociados que se desea retornar. Si se quieren retornar todos los registros, borrar linea
	// 			"dependent" => true,	//Si es true, metodo delete() del modelo es llamado con el parametro cascade como true borrando los datos asociados también
	// 		),
	// );
	// public $belongsTo = array(
	// 	"OtroModelo3" => array(
	// 			"className" => "nombre_modelo",		
	// 			"foreignKey" => "id_otro_modelo3",		//name of the join table used in this association
	// 			"conditions" => array("OtroModelo3.campo1" => activo,),
	// 			"fields" => array("campo1", "campo2",),		//Para capturar todos los campos, borrar linea
	// 			"order" => array("OtroModelo3.campo1",),
	// 		),
	// );

	/**
	 * Descripcion corta metodo.
	 *
	 * Descripción larga metodo
	 *
	 * @param string $campo1 parametro que sirve para..
	 * @param string $campo2 parametro que sirve para..
	 * @return void
	 */
	public function funcion_prueba($campo1,$campo2){
		//Los comentarios dentro de la funciones se crean con '//'
	}
	
	/**
	*Validaciones de cada uno de los atributos del modelo
	*/
	public $validate = array(
			"campo1" => array(
					"validacion1" => array(
							"rule" 			=> "notempty",
							"allowEmpty" 	=> false,
							"required" 		=> "update",
							"message" 		=> "Id no puede estar vacio",
					),
					"validacion2" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id debe ser un número entero",
					),
			),
			"campo2" => array(
					"validacion1" => array(
							"rule" 			=> "notempty",
							"allowEmpty" 	=> false,
							"required" 		=> "update",
							"message" 		=> "Id no puede estar vacio",
					),
					"validacion2" => array(
							"rule" 			=> array("naturalNumber", false),
							"message" 		=> "Id debe ser un número entero",
					),
			),
		);

	/*********************************************************************
	 * 				DATA VALIDATION METHODS
	 *********************************************************************/

	/*********************************************************************
	 * 				MODEL CALLBACKS METHODS
	 *********************************************************************/
	
	// public function beforeFind(array $queryData) {

	// }

	// public function afterFind(array $results, boolean $primary = false) {

	// }

	// public function beforeValidate(array $options = array()) {

	// }

	// public function beforeSave(array $options = array()) {

	// }

	// public function afterSave(boolean $created) {

	// }

	// public function beforeDelete(boolean $cascade = true) {

	// }

	// public function afterDelete() {

	// }
	
	/*********************************************************************
	 * 				MODEL METHODS
	 *********************************************************************/
}